//20220727
//抄写的代码实现了不同组件之间的信息传送

class Observer{
    constructor() {
        //存储所有事件及其回调的对应关系
        this.items={}
    }

    //监听/订阅
    $on( eventName, cb ){
        (this.items[eventName] ||= []).push(cb)
    }

    //派发通知
    $emit(eventName, ...args){
        if( !this.items[eventName]) return
        this.items[eventName].forEach( cb =>cb(...args))
    }

    //切断订阅
    $off( eventName ){
        this.items[eventName] = []
    }
}

export  default  Observer
